﻿
// ====================== 初始化执行内容 ======================
// 初始化设置
$(function() {
	// window.winAlert = window.alert;
	// window.alert = function(msg, optType, title, callback) {
	// jAlert(msg, title, optType, callback);
	// };
});

// ====================== 公共方法 ======================
// 1、去字符串前后的空格
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
};

// -------------------- ajaxdo 开始-------------------------------

/**
 * 封装ajax： 1、自动完成按钮的隐藏和显示 2、loading 内容的显示 3、自动处理错误
 * 
 * @param ajaxParam:ajax的原始参数
 * @param btnObj：如果要设置按钮无效，这个参数为#name
 * @param isShowLoading：空或1表式开启，0表示关闭
 * @param messageDisplayType：消息的显示方式
 * 
 */
function ajaxDo(ajaxParam, btnObj, btnDisplayType, messageDisplayType) {
	// 隐藏按钮，
	disabledEle([ btnObj ]);
	// 设置参数
	setParameter(ajaxParam.datatype, "json");
	setParameter(ajaxParam.type, "POST");
	setParameter(ajaxParam.data, {});
	setParameter(ajaxParam.cache, false);
	setParameter(ajaxParam.async, true);
	
	$.ajax({
		url : ajaxParam.url,
		datatype : ajaxParam.datatype,
		type : ajaxParam.type,
		data : ajaxParam.data,
		success : function(data, textStatus) {
			// 显示按钮
			enabledEle([ btnObj ]);
			// action异常处理
			if (dc_checkError(data, messageDisplayType)) {
				
			}
			if (isUnEmpty(ajaxParam.success)) {
				ajaxParam.success(data, textStatus);
			}
		},
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			// 显示按钮
			enabledEle([ btnObj ]);
			if (isUnEmpty(ajaxParam.error)) {
				ajaxParam.error(XMLHttpRequest, textStatus, errorThrown);
			} else {
				displayMessage(textStatus, messageDisplayType, 2);
			}
		},
		async : ajaxParam.async,
		cache : ajaxParam.cache
	});
}

/**
 * 自动处理action里写回的错误信息
 * 
 * @param data:回写的数据集
 * @param messageDisplayType：信息的显示方式
 * 
 */
function dc_checkError(data, messageDisplayType) {
	var isSuccess = true;
	if (data.isSuccess == "0") {
		displayMessage(data.exceptionMessage, messageDisplayType, "2");
		isSuccess = false;
	}
	return isSuccess;
}

/**
 * AjaxDo 的信息显示的方法。
 * 
 * @param message：要显示的信息
 * @param messageDisplayType：表示div的方式还是alert的提示方式
 * @param successFlag：1表示成功提示，2表示失败提示
 */
function displayMessage(message, messageDisplayType, successFlag) {
// if (isUnEmpty(messageDisplayType)) {// 定义了信息显示的div
// displayMessage(message, successFlag, messageDisplayType);
// } else {
// alert(message, successFlag);
// }
	alert(message, successFlag);
}

//------------------- 分页查询  ------------------------
/**
 * 初始化分页信息
 */
function initPagination(paginationSelector,totalCount,searchURL,paramData) {
	$(paginationSelector).data("searchURL",searchURL);
	$(paginationSelector).data("paramData",paramData);
	
	$(paginationSelector).pagination(totalCount, {
		num_edge_entries : 5,
		link_to : 'javascript:void(0)',
		callback : pageSelectCallback,
		items_per_page : $("#pageSize").val(),
		prev_text:"前一页",
		next_text:"下一页"
	});
}

// 分页回调函数
function pageSelectCallback(page_index, jq) {// 能不能重新让他去查一次
	var paramData = jq.data("paramData");
	paramData['page.pageNo'] = page_index + 1;
	ajaxDo({
		url : jq.data("searchURL"),
		data : paramData,
		success : function(data, textStatus) {
			createContent(data);
		}
	});
}


// ------------------- 单选列表初始化 开始 ------------------------
/*
// 生成单选列表默认第一个 并可带回调函数
function createConditionRadioListCommonWithFisrtValueClickCallBack(objName, affObjName, url, data, defaultNum, clickFun) {
	ajaxDo({
		url : url,
		data : data,
		success : function(data) {
			var json = eval(data);
			jsonObj2htmlObj(json, defaultNum, objName);
			setOnclikRadioList(affObjName, objName, clickFun);
		}
	});
}

// 用给定的json数据初始化单选列表
function createConditionRadioListCommonWithFisrtValueClickCallBack_data(objName, affObjName, jsonData, defaultNum,
		clickFun) {// 这个参数好像没有必要
	jsonObj2htmlObj(jsonData, defaultNum, objName);
	setOnclikRadioList(affObjName, objName, clickFun);

}

// json对像转为单选元素
function jsonObj2htmlObj(json, defaultNum, objName) {
	var obj = $(objName);
	for ( var ind = 0; ind < json.length; ind++) {

		obj.append($("<div class='span-1'><a href='javascript:void(0)' class='mL2' idValue='" + json[ind].parameterCode
				+ "' onFocus='blur()'>" + json[ind].parameterName + "</a></div>"));

		if (defaultNum == ind) {
			$($("a", obj).get(defaultNum)).css("color", "#f60");
			obj.data("idValue", json[defaultNum].parameterCode);
		}
	}
}

// 设置单选click事件
function setOnclikRadioList(aObjectName, ulObjectName, clickFun) {
	var aObject = $(aObjectName);
	var ulObject = $(ulObjectName);
	aObject.click(function() {
		aObject.css('color', '#00f');
		this.style.color = "#f60";
		ulObject.data("idValue", $(this).attr('idValue'));
		if (clickFun != null && clickFun != undefined) {
			clickFun(this);
		}
		return false;
	});
}
*/
// ------------------- 公共基本方法 -------------------

/**
 * 判读对象是否为空，如果为空就设置默认值。
 * 
 * @param param:比较并需要设置的源对像
 * @param defaultValue：如果对像不存在值时的默认值
 */
function setParameter(param, defaultValue) {
	if (!isUnEmpty(param)) {
		param = defaultValue;
	}
	return param;
}

/**
 * 显示loading，
 * 
 * @param param:比较并需要设置的源对像
 * @param defaultValue：如果对像不存在值时的默认值
 */
function showLoading(bgObjName, msgObjName) {
	// 定义背景
	var bgObj = document.getElementById(bgObjName);
	bgObj.style.width = document.body.offsetWidth - 1 + "px";
	bgObj.style.height = document.body.offsetHeight + "px";
	// 定义窗口
	var msgObj = document.getElementById(msgObjName);
	msgObj.style.marginTop = -75 + document.documentElement.scrollTop + "px";
	msgObj.style.display = bgObj.style.display = "block";
}

/**
 * 隐藏loading
 * 
 * @param param:比较并需要设置的源对像
 * @param defaultValue：如果对像不存在值时的默认值
 */
function hiddenLoading(bgObjName, msgObjName) {
	var bgObj = document.getElementById(bgObjName);
	var msgObj = document.getElementById(msgObjName);
	bgObj.style.display = msgObj.style.display = "none";
}

// ====================== 工具方法 ======================
/**
 * 判读obj是否为空
 * 
 * @param obj
 */
function isUnEmpty(obj) {
	var flag = false;
	if (null != obj || typeof obj != "undefined") {
		flag = true;
	}
	return flag;
}

/**
 * 对像转为json字符串
 * 
 * @param obj
 * @returns
 */
function obj2str(obj) {
	var r = [];
	if (typeof o == "string" || obj == null) {
		return obj;
	}
	if (typeof obj == "object") {
		if (!obj.sort) {
			r[0] = "{";
			for ( var i in obj) {
				r[r.length] = "'" + i + "'";
				r[r.length] = ":";
				r[r.length] = "'" + obj2str(obj[i]) + "'";
				r[r.length] = ",";
			}
			r[r.length - 1] = "}";
		} else {
			r[0] = "[";
			for ( var i = 0; i < obj.length; i++) {
				r[r.length] = obj2str(obj[i]);
				r[r.length] = ",";
			}
			r[r.length - 1] = "]";
		}
		return r.join("");
	}
	return obj.toString();
}

/**
 * 禁用对象
 * 
 * @param eleArray 例如：{"#objID"}
 */
function disabledEle(eleArray) {
	if (isUnEmpty(eleArray)) {
		for ( var ind in eleArray) {
			$(eleArray[ind]).attr("disabled", "disabled");
		}
	}
}

/**
 * 解禁对象
 * 
 * @param eleArray 例如：{"#objID"}
 */
function enabledEle(eleArray) {
	if (isUnEmpty(eleArray)) {// 显示按钮
		for ( var ind in eleArray) {
			$(eleArray[ind]).removeAttr("disabled");
		}
	}
}